package com.finger;

public class FingerModule {

	public native int xdev_savebmp(String name); // 将当前采集的指纹图像数据保存为bmp文件，name即为包含路径的bmp文件名
	public native int xdev_init(int fd); // 设备打开并初始化，其中 fd 为授权的 id，来自于 FingerUtil.java 中的 getFd()
	// 授权来自于 FingerUtil.java 中的 FingerUtil(...)，为应用层用户对设备进行授权确认

	public native void template_start(); // 获取指纹模板初始化
	public native int xdev_getImageAndFeature(int timeout, byte[] imagebuffer, byte[] featurebuffer); // 获取指纹图像及指纹特征，timeout 为采集时的超时时间，1000即为1秒，默认为 8000
	public native int xdev_imgW(); // 返回指纹图像的宽度
	public native int xdev_imgH(); // 返回指纹图像的高度
	public native int xdev_getTemplate(int count, byte[] templatebuffer); // 生成指纹模板，count 为注册时需要的次数（1-6），默认为 3
	public native int xdev_waitleft(); // 等待手指抬起
	//
	// 注：以上四个函数共同完成N次（默认为3次）采集指纹生成指纹模板，调用规则必须按照 MainActivity.java 的 getFingerTemp() 进行
	//

	public native int xdev_cancle(); // 随时取消采集指纹过程，另外线程随时调用

	public native int xdev_recognition_finger(byte[] templatebuffer, byte[] featurebuffer, int threshold); // 指纹模板和指纹特征比对

	public native int xdev_recognition_fingerGAB(byte[] templatebuffer, byte[] featurebuffer, int threshold); // 指纹模板和指纹特征比对

	public native void xdev_exit(); // 关闭设备

	//
	// 设置采集指纹的速度，在 xdev_getImageAndFeature(...) 前调用
	//
	// 如果硬件平台速度太快，则需要降低采集速度以保证最佳采集效果和体验效果，
	//           否则会出现手指还没放置稳定即采集完成，这样采集效果就会不好，
	// 相反如果硬件平台速度太慢，则需要提升采集速度以保证最佳体验效果，
	//           否则用户会感觉设备反应慢，体验效果不佳
	//
	// int speed：0 - 2 共 3 个等级，0 最快速度，2 最慢速度，默认为 2，
	//            如果 speed 值不在 0 - 2 之间 或者没有调用本函数，则使用默认值 2
	//            请根据实际设备平台选择最合适的速度
	//
	public native void xdev_SetSpeedOfGetImageAndMinutiae(int speed);
	//
	// 返回采集指纹的综合质量分数，0 - 100，注册定40，比对定30
	// 在 xdev_getImageAndFeature(...) 后调用
	//
	public native int xdev_CalQuality();
	//
	// 返回采集的指纹图像的有效面积，以像素个数计算
	// TCS1 的图像全部像素点个数为：360 * 256
	// TCS2 的图像全部像素点个数为：288 * 208
	// 在 xdev_getImageAndFeature(...) 后调用
	//
	public native int xdev_GetValidPoints();

	static {
		System.loadLibrary("usbfinger");
	}
}
